TypeScript 93.3%
JavaScript 4.4%
CSS 2.3%
1/**2 * Author: Simon-Pierre Boucher3 * Contact: contact@spboucher.ai4 * Project: Hilmacorp.ai — Web Platform5 * File: app/[locale]/security/page.tsx6 * Description: Security & responsible deployment page — governance controls and practices7 */89import type { Metadata } from "next";10import Container from "@/components/Container";11import SectionHeading from "@/components/SectionHeading";12import { getMessages, isLocale, type Locale } from "@/lib/i18n";1314export async function generateMetadata({15 params,16}: {17 params: Promise<{ locale: string }>;18}): Promise<Metadata> {19 const { locale } = await params;20 if (!isLocale(locale)) return {};21 const { meta } = getMessages(locale);22 return { title: { absolute: meta.security.title }, description: meta.security.description };23}2425export default async function SecurityPage({26 params,27}: {28 params: Promise<{ locale: string }>;29}) {30 const { locale } = await params;31 const { security } = getMessages(locale as Locale);3233 return (34 <>35 <section className="relative overflow-hidden border-b border-line">36 <div className="grid-backdrop absolute inset-0" aria-hidden="true" />37 <Container className="relative py-20 sm:py-28">38 <SectionHeading as="h1" title={security.title} lead={security.lead} />39 </Container>40 </section>4142 <section className="py-16 sm:py-20">43 <Container>44 <ul className="grid gap-4 sm:grid-cols-2">45 {security.items.map((item) => (46 <li47 key={item.title}48 className="rounded-2xl border border-line bg-card p-7 shadow-sm"49 >50 <div className="flex items-start gap-4">51 <span52 aria-hidden="true"53 className="mt-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-xl bg-accent-soft"54 >55 <svg width="16" height="16" viewBox="0 0 16 16" fill="none">56 <path57 d="M8 1.5l5 2v4c0 3.2-2.1 5.6-5 7-2.9-1.4-5-3.8-5-7v-4l5-2z"58 stroke="#0b6b4a"59 strokeWidth="1.5"60 strokeLinejoin="round"61 />62 </svg>63 </span>64 <div>65 <h2 className="text-base font-semibold text-ink">{item.title}</h2>66 <p className="mt-2 text-sm leading-relaxed text-ink-faint">{item.body}</p>67 </div>68 </div>69 </li>70 ))}71 </ul>72 <p className="mx-auto mt-14 max-w-3xl border-l-2 border-accent pl-6 font-display text-xl leading-relaxed text-ink">73 {security.closing}74 </p>75 </Container>76 </section>77 </>78 );79}80